﻿using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Domain.RBAC
{
    /// <summary>
    /// 角色表
    /// 原实体名: Rolemodel
    /// 修改后实体名: Role (保持类名不变以兼容现有代码)
    /// </summary>
    [SugarTable("rolemodel", TableDescription = "角色表")]
    public class Rolemodel : BaseEntity
    {
        /// <summary>
        /// 角色编号（唯一标识）
        /// 原字段名: Rolecode
        /// 修改后字段名: RoleCode
        /// 用途：用于业务层面的角色唯一标识，便于系统集成和配置
        /// </summary>
        [SugarColumn(ColumnDescription = "角色编号", Length = 50, IsNullable = false)]
        public string RoleCode { set; get; }

        /// <summary>
        /// 角色名称
        /// 原字段名: Rolename
        /// 修改后字段名: RoleName
        /// </summary>
        [SugarColumn(ColumnDescription = "角色名称", Length = 100, IsNullable = false)]
        public string RoleName { get; set; }

        /// <summary>
        /// 角色描述/说明
        /// 新增字段
        /// 用途：详细说明角色的职责和权限范围，便于角色管理
        /// </summary>
        [SugarColumn(ColumnDescription = "角色描述", Length = 500, IsNullable = true)]
        public string? Description { get; set; }

        /// <summary>
        /// 角色状态（1-启用，0-禁用）
        /// 新增字段
        /// 用途：控制角色是否生效，禁用后拥有该角色的用户对应权限失效
        /// </summary>
        [SugarColumn(ColumnDescription = "角色状态", IsNullable = false)]
        public int Status { get; set; } = 1;

        /// <summary>
        /// 角色状态文本（1-启用，0-禁用）
        /// 新增字段
        /// 用途：控制角色是否生效，禁用后拥有该角色的用户对应权限失效
        /// </summary>
        [SugarColumn(ColumnDescription = "角色状态文本")]
        public string? StatusText { get; set; }

        /// <summary>
        /// 角色类型
        /// 新增字段
        /// 用途：区分不同类型的角色（1-管理员，2-普通角色，3-访客）
        /// </summary>
        [SugarColumn(ColumnDescription = "角色类型", IsNullable = false)]
        public int RoleType { get; set; } = 2;

        /// <summary>
        /// 角色类型文本
        /// 新增字段：便于前端显示
        /// </summary>
        public string? RoleTypeText { get; set; }

        /// <summary>
        /// 备注信息
        /// 新增字段
        /// 用途：记录其他需要说明的信息
        /// </summary>
        [SugarColumn(ColumnDescription = "备注", Length = 500, IsNullable = true)]
        public string? Remark { get; set; }
    }
}
